package com.freetymekiyan.algorithms.utils; import java.security.InvalidParameterException; import java.util.ArrayDeque; import java.util.Queue; /** * Utility class. */ public class Utils { public static ListNode buildLinkedList(int[] values) { ListNode head = new ListNode(values[0]); ListNode cur = head; for (int i = 1; i < values.length; i++) { cur.next = new ListNode(values[i]); cur = cur.next; } return head; } public static TreeNode buildBinaryTree(Integer[] values) { if (values == null || values.length == 0) { throw new InvalidParameterException("values should not be null or empty"); } TreeNode root = new TreeNode(values[0]); Queue<TreeNode> queue = new ArrayDeque<>(); queue.offer(root); int i = 1; while (!queue.isEmpty() && i < values.length) { TreeNode node = queue.poll(); if (i < values.length && values[i] != null) { node.left = new TreeNode(values[i]); queue.offer(node.left); } if (i + 1 < values.length && values[i + 1] != null) { node.right = new TreeNode(values[i + 1]); queue.offer(node.right); } i += 2; } return root; } public static class ListNode { public int val; public ListNode next; public ListNode(int x) { val = x; } } public static class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } } }